package com.coder.algorithm.leetcode;

import com.coder.algorithm.struct.ListNode;

/**
 * 递归
 *
 * @author yuhushuan
 * @date 2020/10/20 16:03
 */
class l_0024 {
    public ListNode swapPairs(ListNode head) {
        ListNode node = head;
        ListNode prev = null;
        while (node != null && node.getNext() != null) {
            // 保存下一轮的节点
            ListNode nextNode = node.getNext().getNext();

            // 要删除的节点
            ListNode del = node.getNext();
            node.setNext(nextNode);

            // 将删除的节点添加到 node 前
            if (prev != null){
                prev.setNext(del);
            }else {
                head = del;
            }
            del.setNext(node);
            prev = node;

            // 继续下一轮
            node = nextNode;
        }
        return head;
    }
}
